package archimede;

import java.awt.Font;
import java.awt.Graphics;
import java.util.Scanner;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

import com.itextpdf.text.Anchor;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.Paragraph;

import net.miginfocom.swing.MigLayout;


public class Strumenti extends JPanel {

	private JRadioButton igrometro = new JRadioButton("Analisi ponderale DARR");
	private JRadioButton infrarossi = new JRadioButton("Analisi termografica");
	private JRadioButton regUmidita = new JRadioButton("Analisi igrometrica'");
	private JRadioButton datalogger = new JRadioButton("Analisi dei Sali con il Salt Detector");
	private JRadioButton analUmidita = new JRadioButton("Analisi del potenziale elettrico tra i materiali");
	private JRadioButton clima = new JRadioButton("Monitoraggio climatico");
	private JRadioButton critico = new JRadioButton("Rilievo critico");

	protected void paintComponent(Graphics g) {
		setOpaque(false);
		g.drawImage((new ImageIcon(ClassLoader.getSystemResource("sfondo.jpg"))).getImage(), 0, 0, null);
		super.paintComponent(g);
	}

	public Strumenti() {
		super();
		setLayout(new MigLayout("", "", "25[]10[]10[]10[]10[]10[]"));

		JLabel descrittiva = new JLabel("Strumentazione usata");
		descrittiva.setFont(new Font("Arial", Font.BOLD, 20));

		igrometro.setFont(new Font("Arial", Font.PLAIN, 18));
		infrarossi.setFont(new Font("Arial", Font.PLAIN, 18));
		regUmidita.setFont(new Font("Arial", Font.PLAIN, 18));
		datalogger.setFont(new Font("Arial", Font.PLAIN, 18));
		analUmidita.setFont(new Font("Arial", Font.PLAIN, 18));
		clima.setFont(new Font("Arial", Font.PLAIN, 18));
		critico.setFont(new Font("Arial", Font.PLAIN, 18));

		igrometro.setOpaque(false);
		infrarossi.setOpaque(false);
		regUmidita.setOpaque(false);
		datalogger.setOpaque(false);
		analUmidita.setOpaque(false);
		clima.setOpaque(false);
		critico.setOpaque(false);
		//
		add(descrittiva, "wrap , gapleft 15");
		add(igrometro, "wrap, gapleft 15");
		add(infrarossi, "wrap, gapleft 15");
		add(regUmidita, "wrap, gapleft 15");
		add(datalogger, "wrap, gapleft 15");
		add(analUmidita, "wrap, gapleft 15");
		add(clima, "wrap, gapleft 15");
		add(critico, "wrap, gapleft 15");

	}

	public String print() {
		String print = "\n#" + igrometro.isSelected();
		print = print + "\n#" + infrarossi.isSelected();
		print = print + "\n#" + regUmidita.isSelected();
		print = print + "\n#" + datalogger.isSelected();
		print = print + "\n#" + analUmidita.isSelected();
		print = print + "\n#" + clima.isSelected();
		print = print + "\n#" + critico.isSelected();
		print = print + "\n@@Strumenti";

		return print;
	}

	public void setElement(String data) {
		Scanner c = new Scanner(data);
		// System.out.println(data);
		c.nextLine();
		if (c.nextLine().substring(1).equals("true"))
			igrometro.setSelected(true);
		else
			igrometro.setSelected(false);

		if (c.nextLine().substring(1).equals("true"))
			infrarossi.setSelected(true);
		else
			infrarossi.setSelected(false);

		if (c.nextLine().substring(1).equals("true"))
			regUmidita.setSelected(true);
		else
			regUmidita.setSelected(false);

		if (c.nextLine().substring(1).equals("true"))
			datalogger.setSelected(true);
		else
			datalogger.setSelected(false);

		if (c.nextLine().substring(1).equals("true"))
			analUmidita.setSelected(true);
		else
			analUmidita.setSelected(false);

		if (c.nextLine().substring(1).equals("true"))
			clima.setSelected(true);
		else
			clima.setSelected(false);

		if (c.nextLine().substring(1).equals("true"))
			critico.setSelected(true);
		else
			critico.setSelected(false);
	}

	public Document pdf(Document doc) {

		if (!(igrometro.isSelected() || infrarossi.isSelected() || regUmidita.isSelected() || datalogger.isSelected() || analUmidita.isSelected()
				|| clima.isSelected() || critico.isSelected()))
			return doc;

		doc.newPage();

		Chunk underline = new Chunk("4. Strumentazione utilizzata e condizioni", FontFactory.getFont(FontFactory.TIMES, 16, Font.BOLD));
		underline.setUnderline(1.2f, -2f); // 0.1 thick, -2 y-location

		Anchor anchorTarget = new Anchor(underline);
        anchorTarget.setName("strumentazione");
        Paragraph targetParagraph = new Paragraph();
        targetParagraph.add(anchorTarget);
        try {
           doc.add(targetParagraph);
        } catch (DocumentException e2) {
           e2.printStackTrace();
        }

		Paragraph dati;
		String line = "Durante la nostra diagnostica abbiamo utilizzato la seguente attrezzatura :";
		dati = new Paragraph(line, FontFactory.getFont(FontFactory.TIMES, 12, Font.BOLD));
		dati.setAlignment(Element.ALIGN_LEFT);
		try {
			dati.setSpacingAfter(10);
			doc.add(dati);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		char point = (char) 126;
		if (igrometro.isSelected()) {
			line = point + " " + igrometro.getText();
			dati = new Paragraph(line, FontFactory.getFont(FontFactory.TIMES, 12, Font.BOLD));
			dati.setAlignment(Element.ALIGN_LEFT);
			try {
				doc.add(dati);
			} catch (DocumentException e) {
				e.printStackTrace();
			}

			line = "    Estrazione dei campioni e determinazione dei valori di umidità:Si estraggono dei campioni di farina dal muro, compiendo dei semplici fori nello stesso di Max 10 mm di diametro ad una profondità di 15/20 cm. I campioni sono rappresentativi del materiale edile impiegato, dello stato conservativo in cui si trova la costruzione. Per la determinazione del grado di umidità si utilizza il metodo ponderale DARR secondo Norme Austriache: i campioni sono pesati ed essiccati con l’analizzatore d’umidità computerizzato a 105 gradi per determinare il valore reale dell’umidità stabilendo il rapporto tra materiale umido iniziale e quello secco alla fine dell’essicazione;";
			dati = new Paragraph(line, FontFactory.getFont(FontFactory.TIMES, 10));
			dati.setAlignment(Element.ALIGN_LEFT);
			try {
				dati.setSpacingAfter(10);
				doc.add(dati);
			} catch (DocumentException e) {
				e.printStackTrace();
			}

		}

		if (infrarossi.isSelected()) {
			line = point + " " + infrarossi.getText();
			dati = new Paragraph(line, FontFactory.getFont(FontFactory.TIMES, 12, Font.BOLD));
			dati.setAlignment(Element.ALIGN_LEFT);
			try {
				doc.add(dati);
			} catch (DocumentException e) {
				e.printStackTrace();
			}

			line = "    La termografia permette di visualizzare valori assoluti e variazioni di temperatura degli oggetti, indipendentemente dalla loro illuminazione nel campo del visibile. I principali campi di applicazione nell'edilizia sono: - verifica dell'isolamento e delle impermeabilizzazioni - analisi del degrado dovuto a umidità - ricerca di cause d’infiltrazioni idriche - ricerca di elementi costruttivi nascosti;";
			dati = new Paragraph(line, FontFactory.getFont(FontFactory.TIMES, 10));
			dati.setAlignment(Element.ALIGN_LEFT);
			try {
				dati.setSpacingAfter(10);
				doc.add(dati);
			} catch (DocumentException e) {
				e.printStackTrace();
			}

		}

		if (regUmidita.isSelected()) {
			line = point + " " + regUmidita.getText();
			dati = new Paragraph(line, FontFactory.getFont(FontFactory.TIMES, 12, Font.BOLD));
			dati.setAlignment(Element.ALIGN_LEFT);
			try {
				doc.add(dati);
			} catch (DocumentException e) {
				e.printStackTrace();
			}

			line = "    Attraverso un igrometro elettrico e possibile verifica lo stato d’umidità delle murature (profondità massima di misurazione 1,5 – 2 cm). Questo strumento non mostra la quantità dell’umidità presente ma solo un valore qualitativo in una scala numerica. L’ igrometro è uno strumento portatile che attraverso l’emissione dall'elettrodo a sfera di onde ad alta frequenza misura e indica nell’ indicatore digitale LCD l’umidità dei materiali analizzati.Adatto per rilevare in tempo reale la distribuzione dell'umidità in pareti soffitti pavimenti e massetti. Lo strumento può misurare l’ intonaco o la muratura per una profondità massima di 1,5 – 2 cm. Risulta un buon strumento per avere delle indicazioni parziali senza dover eseguire alcun intervento invasivo, nel contempo a volte dovrà essere accompagnato da altre analisi invasive;";
			dati = new Paragraph(line, FontFactory.getFont(FontFactory.TIMES, 10));
			dati.setAlignment(Element.ALIGN_LEFT);
			try {
				dati.setSpacingAfter(10);
				doc.add(dati);
			} catch (DocumentException e) {
				e.printStackTrace();
			}

		}

		if (datalogger.isSelected()) {
			line = point + " " + datalogger.getText();
			dati = new Paragraph(line, FontFactory.getFont(FontFactory.TIMES, 12, Font.BOLD));
			dati.setAlignment(Element.ALIGN_LEFT);
			try {
				doc.add(dati);
			} catch (DocumentException e) {
				e.printStackTrace();
			}

			line = "    Misurazione dei Sali con strumento Salt Detector, per determinare la quantità di Sali presenti nei materiali edili. Individuazione del tipo di Sali (nitrati, solfati, cloruri, ecc.)con cartine tornasole;";
			dati = new Paragraph(line, FontFactory.getFont(FontFactory.TIMES, 10));
			dati.setAlignment(Element.ALIGN_LEFT);
			try {
				dati.setSpacingAfter(10);
				doc.add(dati);
			} catch (DocumentException e) {
				e.printStackTrace();
			}
		}

		if (analUmidita.isSelected()) {
			line = point + " " + analUmidita.getText();
			dati = new Paragraph(line, FontFactory.getFont(FontFactory.TIMES, 12, Font.BOLD));
			dati.setAlignment(Element.ALIGN_LEFT);
			try {
				doc.add(dati);
			} catch (DocumentException e) {
				e.printStackTrace();
			}

			line = "    Misurazione del potenziale elettrico orizzontale tra la muratura e l’intonaco, per stabilire la compatibilità del PH tra i materiali edili. Misurazione del potenziale elettrico verticale per stabilire se c’è o no una risalita capillare dell’umidità all’interno della muratura;";
			dati = new Paragraph(line, FontFactory.getFont(FontFactory.TIMES, 10));
			dati.setAlignment(Element.ALIGN_LEFT);
			try {
				dati.setSpacingAfter(10);
				doc.add(dati);
			} catch (DocumentException e) {
				e.printStackTrace();
			}
		}

		if (clima.isSelected()) {
			line = point + " " + clima.getText();
			dati = new Paragraph(line, FontFactory.getFont(FontFactory.TIMES, 12, Font.BOLD));
			dati.setAlignment(Element.ALIGN_LEFT);
			try {
				doc.add(dati);
			} catch (DocumentException e) {
				e.printStackTrace();
			}

			line = "    Il monitoraggio climatico si realizza con la collocazione nell’ambiente da analizzare  sensori termo igrometrici per periodi minimi di 24 ore fino a lunghi periodi diversificando i dati estivi con quelli invernali ad esempio. I dati registrati permettono di visionare gli andamenti di T (temperatura ambientale e di rugiada) e UR (umidità relativa) negli ambienti rendendo evidente l’eventuale insorgenza di situazioni di rischio condensa o degrado di altro tipo. Questo tipo di analisi è fondamentale alla presenza di antichi intonaci con dipinti o affreschi da conservare su murature ammalorate dall’umidità;";
			dati = new Paragraph(line, FontFactory.getFont(FontFactory.TIMES, 10));
			dati.setAlignment(Element.ALIGN_LEFT);
			try {
				dati.setSpacingAfter(10);
				doc.add(dati);
			} catch (DocumentException e) {
				e.printStackTrace();
			}
		}

		if (critico.isSelected()) {
			line = point + " " + critico.getText();
			dati = new Paragraph(line, FontFactory.getFont(FontFactory.TIMES, 12, Font.BOLD));
			dati.setAlignment(Element.ALIGN_LEFT);
			try {
				doc.add(dati);
			} catch (DocumentException e) {
				e.printStackTrace();
			}

			line = "    Al fine di verificare l’esistenza o la fattezza di alcuni particolari tecnici a volte si rende necessario eseguire la rimozione dell’intonaco su piccole aree delle murature per verificare la presenza, lo stato e le quote delle guaine taglia muro.  Secondo le esigenze si può verificare la necessità di compiere carotaggi o demolizioni in profondità per costatare lo stato di fatto degli isolamenti o di altri materiali;";
			dati = new Paragraph(line, FontFactory.getFont(FontFactory.TIMES, 10));
			dati.setAlignment(Element.ALIGN_LEFT);
			try {
				doc.add(dati);
			} catch (DocumentException e) {
				e.printStackTrace();
			}
		}

		return doc;
	}

}
